소프트웨어 개발방법론

소프트웨어 개발방법론 출현배경

소프트웨어 위기인식에 따른 소프트웨어공학의 발전

  • 소프트웨어의 수요는 그 규모와 복잡성으로 인해 기하급수적으로 증가했다. 반면 개발인력의 공급한계 및 유지보수 대상과 신규 개발 요구의 급격한 증가로 총체적 위기의식이 고조되었다.
  • 1968년 NATO과학위원회의 국제회의에서 소프트웨어 위기라는 용어를 처음 사용했다.

소프트웨어 이용범위의 확대

  • 사용자들의 정보시스템에 대한 이해도가 확대되었다.
  • 이용범위도 실무자 중심에서 관리자와 경영층으로 점차 확대되었다.

소프트웨어 프로젝트의 대형화

  • 소프트웨어 개발 시 프로젝트의 규모 및 복잡도가 증가함에 따라 개발에 참여하는 인력을 대규모로 구성한다.
  • 소프트웨어 프로젝트가 대형화되면서 개발기간의 장기화로 예산/기간/품질상의 복합적인 문제가 대두되었다.


소프트웨어 개발방법론의 이해

소프트웨어 개발방법론이란 소프트웨어공학원리를 소프트웨어 개발 생명주기에 적용한 개념으로 정보시스템을 개발하기 위한 작업활동, 절차, 산출물, 기법 등을 체계적으로 정리한 것이다.

소프트웨어 개발방법론의 특징

  • 개발단계를 정의하고 활동, 제품, 검증절차, 각 단계의 종결기준 등을 상술한다.
  • 소프트웨어 개발에 관한 계획, 분석, 설계 및 구축에 대하여 정형화된 방법과 절차, 도구 등을 공학적인 기법으로 정리한다.
  • 소프트웨어 개발 방법 및 절차, 도구 등이 실무적인 관점에서 하나의 체계로 묶인다.

소프트웨어 개발방법론의 필요성

  • 개발경험을 축적 및 재활용을 통한 개발 생산성을 향상시킨다. (작업의 표준화/모듈화)
  • 효과적인 프로젝트 관리가 가능하다.
  • 정형화된 절차와 표준용어를 제공하여 의사소통 수단을 제공한다.
  • 각 단계별 검증과 종결승인을 통해 일정 수준의 품질을 보증한다.


구조적 방법론

개요

  • 데이터 중심의 방법론

기본원리

  • 추상화
  • 구조화
  • 단계적 상세화
  • 모듈화

특징

  • 분할과 정복의 원칙
  • 프로그램 로직 중심
  • 컨트롤 가능한 모듈로 구조화

단계별주요산출물

  • (계획) 도메인 분석서, 프로젝트 계획서
  • (분석) Data Flow Diagram
  • (설계) Structure Chart, 프로그램 사양서


정보공학 방법론

개요

  • 데이터 중심의 방법론

기본원리

  • 정보전략계획
  • 업무영역분석
  • 업무시스템설계
  • 시스템구축

특징

  • 기업 업무지원 시스템 지원 방법론
  • Data Model 중시
  • 프로그램 로직은 데이터 구조에 종속(CRUD)
  • 전사적 통합 데이터모델

단계별주요산출물

  • (계획) 도메인 분석서, 프로젝트 계획서
  • (분석) E-R Diagram, 기능차트, Event모델
  • (설계) 애플리케이션 구조도, 프로그램사양서, Table 정의서/목록


객체지향 방법론

개요

  • 객체, 클래스 및 이들간의 관계를 식별하여 설계모델로 변환하는 방법론

기본원리

  • 요건정의
  • 객체지향분석: 객체모델링 $\rightarrow$ 동적 모델링 $\rightarrow$ 기능 모델링
  • 객체지향설계: 시스템설계 $\rightarrow$ 객체설계 $\rightarrow$ 구현
  • 테스트/배포: 테스트 $\rightarrow$ 패키지 $\rightarrow$ 프로젝트평가

특징

  • 프로그램의 원소는 객체
  • 데이터와 로직 통합(객체)
  • 고도의 모듈화
  • 상속에 의한 재사용(White Box Reuse)
  • 분석-설계간 Gap없음

단계별주요산출물

  • (계획) Biz Process/Concept Model, 프로젝트 계획서
  • (분석) Use Case Diagram, Sequence Diagram, Class Diagram
  • (설계) Sequence Diagram, Class Diagram, Component Diagram, Deployment Diagram


컴포넌트기반 방법론

개요

  • 재사용이 가능한 컴포넌트의 개발 또는 상용 컴포넌트들을 조합하는 방법론

기본원리

  • 요구분석
  • 분석: 아키텍처 정의, UseCase 모델링
  • 설계: UI설계, 컴포넌트 정의/설계, DB ,컨버젼, 테스트 설계
  • 개발: 코딩, 테스트
  • 구현: 릴리즈, 교육

특징

  • 객체방법론의 진화된 형태
  • Interface중시
  • 인터페이스의 구현이 컴포넌트
  • Black Box Reuse 지향

단계별주요산출물

  • (계획) Biz Process/Concept Model, 프로젝트 계획서
  • (분석) Use Case Diagram, Component Diagram, 재사용 계획서
  • (설계) Sequence Diagram, Class Diagram, Component Diagram


소프트웨어 개발방법론 선택기준

  • 프로젝트 환경 (응용분야, 시스템규모, 복잡도, 성격 등)
  • 수작업 최소화와 자동화 정도가 높을수록 좋다. (시간과 비용 절감)
  • 개발자들의 공감하에 적절히 이용할 수 있어야 한다. (방법과 도구, 경험)
  • 프로젝트 진행과정의 활동과 절차 수행에 필요한 기법과 표준제공 여부
  • 작업수행자의 책임과 역할 정의의 구체성 및 산출물 템플릿 제공 여부
  • 프로젝트 진행의 일관성, 개발생산성, 산출물의 품질보증 등 성공확신 정도
Share